iT邦幫忙

2022 iThome 鐵人賽

DAY 24
1

註:因為有NDA的關係(就算沒有也是保護一下公司)
面試篇每一篇都不會把確切的題目打出來
(我看每個人的心得文都有提到題目類型,感覺分享題目類型還是ok的)
難度不會用Easy Medium Hard表示,請見你可能不知道的 Leetcode 小知識
(HR看到這篇覺得有什麼東西不希望被分享的話請寄到gmail信箱sendmefkingspammail)

筆者第一次面試Google已經是一年半前的事情了
雖然會盡量打的詳細,但是有東西沒有記得很清楚也請見諒

總之當時犯了超級多錯誤的,請讀者一定要避免重蹈覆徹

一開始的錯誤是當時筆者總共就只丟了Google和微軟這兩間公司面試,
而且Google的面試又先開始,所以Google台灣這個大魔王面試
其實是筆者人生第一場正式面試,
整個緊張到不行,因為前一天的晚上也都睡不太好,
幾乎每一天的第一場面試都精神不太好有點失常,這點是特別要注意的

我認為能夠克服這種要打大魔王了超級緊張到不行的瓦倫達效應
有兩個方法

一個就是多找人做一點很正式的那種mock interview,計時、不要聊天、全英文、不要亂給提示、不要考寫過的題目、甚至難度考稍微難一點點

另外一個就是認真比Leetcode contest,等到穩定2100分之後,其實大部分面試難度會考到的題目都已經有一定程度的掌握度了,而且leetcode排行榜上台灣國旗且2200分以上的人,大部分都是Google台灣的員工,有這個喔我跟那些面試通過的人分數差不多的自信在,遇到題目的時候會比較自在一點,如果被考了自己不會的題目,代表大部分被考一樣題目的人也都答不出來或是答的不是很好,所以面試官也不會對你特別苛刻

HR

總之第一次面試是在LinkedIn上被HR亂槍打鳥問說要不要去面面看就開始了,
剛好那個時候也有想法也有在刷題(但是沒有固定在比Leetcode Contest,筆者估計當初大概是1800分)
跟HR打電話時刷了大概300題,Virtual Onsite面試前是549題

Phone Interview

在確定要面試哪個Team之後一兩個禮拜,就接到了Phone Interview(視訊)的連結
Phone Interview是台灣人,考一個跟Hash Table + DFS 的實作題,
感覺難度1500-1700之間,全中文,
然後被問了很多Hash Table的細節,code有打完,但是細節很多沒有回答的很好,
當初覺得自己表現好像蠻差的,不過後來還是收到有進Virtual Onsite的信
(感覺Phone Interview只是一個粗略的快篩篩掉那些不太會寫code的,所以可能是表現的普通的也會進到下一輪,也有可能是我比我以為的表現好,總之我到現在也不知道)

然後那個時候的Google Virtual Onsite面試還是五關
(四關coding+1關BQ) 五關全部都是台灣人面試,一開始HR有說coding會是兩個中文兩個英文,BQ是中文

第一關coding

全英文,面試官人很好而且邏輯非常清晰,會一直引導(重複講你的想法,但不是給提示),有基礎題跟延伸題,
基礎題考的是一題區間相關非常經典的Greedy題,感覺難度1500-1600,
以台灣Google的面試來說非常非常簡單,
但是前一天沒睡好而且人生第一次Virtual Onsite,真的是緊張到不行,
明明是很簡單的題目但是想演算法的時候還是猶豫很久而且卡了很久(10分鐘吧)
雖然後來寫code的時候印象中寫的蠻快的,而且看到進階題也是一下就想到演算法,
但是寫完的時候幾乎剛好45分鐘,沒有問到什麼問題就時間到了
進階題可能難度也沒超過1800,而且這種先給一題再給第二題的,第二題就算本身難度高但因為跟第一題很相關,通常可以重複使用code而且想法不太會偏,所以難度要再降一點

自我感覺是Weak Hire或比較可能是Weak Reject,感覺那種經典到不行的問題還卡那麼久,相對其他秒殺的應徵者而言被扣了蠻多分的

第二關coding

全中文,因為是中文所以順很多,考的是一個PQ問題 + follow up,然後記得也跟區間蠻有關的,感覺一開始那題難度1600-1700吧,順順的就寫出來,follow up現在已經忘記是什麼題目了,但也不是太難(1700~1900),演算法一下就滿意了就開始寫code,但寫code的時候小小卡了一下被給了一個小提示(也忘記寫完的時候剩多久了),
自我感覺是Hire到Weak Hire之間,沒犯什麼錯的一關

第三關BQ

全中文而且忘記被問什麼了,面試Google台灣 BQ可以說是最不緊張而且最沒什麼好分享的...

第四關coding

是我遇過最雷的面試,這關中文打完招呼之後面試官就用英文開始了面試,但是面試官的英文程度非常非常差,幾乎遇到稍微複雜一點的句子,面試官就只能拆開用英文單字而不是一個完整的句子跟我溝通,而且他講話超級慢,還會一直停頓在想單字,同理當我講出一些稍微困難一點的單字時,也感受不到面試官到底有沒有聽懂,交談起來比筆者跟印度人開會的經驗還吃力,這是到現在還讓我印象深刻到不行的一個回憶,超級讓我傻眼(不禁懷疑這個面試官是不是在拿面試練英文口說....)
如果只是英文講不好又聽不太懂難一些的單字就算了,這題的題目是一個比較偏應用的Constructive的問題
因為筆者當時很沒有經驗.(也因為溝通起來太有障礙了) 聽面試官的描述,他好像問說我說你會怎麼想,有哪些東西要考慮之類的,我就以為這題是coding題目順便考一些system design的觀念,所以還問他說喔那我生成的這個東西是不是要考量資安之類的,所以自己幫他加了一些限制說不能怎樣怎樣怎樣,鬼打牆了大概5-10分鐘,面試官好像終於聽懂我在說什麼之後説,你怎麼會這樣想?

當下(現在回頭想起來也是)傻爆眼,面試官不是應該適時引導,怎麼會是變成適時把我導歪...
後來面試官想辦法給了一些提示,我也終於搞懂喔這題就是一個是constructive的leetcode那種題目,沒有什麼特別厲害的演算法就暴力做就可以了

而且再一個很雷的事情是面試面到一半面試官大概覺得沒希望了,他就把視訊關掉了(感覺跑去做事了),因為經驗不夠,所以我當時也沒跟他反應(面試官的表情資訊 像是皺眉或點頭,其實在面試中會有很大的幫助)
最後拿到提示寫完之後發現原來這題還有一個follow up,不過也就完全沒時間了
自我感覺,這關如果不是拿到Reject或是Strong Reject以外我會很意外

最後一關coding

英文(對又是英文,所以原本2英2中變成3英1中)
事後問問題的時間還特別跟這關的面試官確認了一下,他說他拿到的是英文
顯然前兩關有一個人搞錯面試語言

被考了一個Random Pick + follow up的問題,如果沒有寫過類似題的話,
第一題算是有一點點難度,我猜1700左右,但筆者那個時候有寫過類似題,
所以一開始這題寫的還蠻順的,
follow up的問題要用面試官想要的解法解出來應該真的難的不得了,
我猜是要特殊的競賽資料結構才能做(難度2500+,到現在我還是不會XDDD),我覺得已經窮我所能了,但是面試官還是說會有更好的複雜度,笑笑的說好吧他沒有遇過什麼人能夠在短時間內想出來,掙扎了一下子之後面試官怕我沒時間把code寫完,就叫我寫目前的解吧
面試官英文很好,溝通也沒什麼問題,感覺的出來是一個有在打競賽的超級強者
自我感覺Hire到Weak Hire中間

Result

以上就是當初的故事,後來就過了兩三個禮拜之後收到HR約了meeting
跟我說有兩關ok兩關不ok,不ok的兩關一致的評論是想問題想的太慢了
所以不會move on送HC,但是跟我說我的表現只差錄取一點點(不確定是不是大部分情況都會這樣安慰人),所以一般人可能要一年後才建議再來面試,我6個月或9個月過後就可以再去聯絡他

一點總結

刷了那麼多topic,面試就真的還是運氣佔很大一部分,因為Google面試官之間的題目是不會先串通好的,像是練習很多的 DP/Tree/Graph/Tree/Two Pointer/Array相關的題目都沒有被考,被考到比較偏的constructive題目和random pick的題目,區間相關的題目還被考了兩題,可以說考察的是非常不完整

但另一方面也要怪自己當初不夠強,刷題刷得不夠熟,也太沒有經驗了
第一是DSA的題目就真的只是DSA,大部分時候是不用像system design一樣的題目考慮一堆使用者情境的,
就算遇到第三關那種溝通真的很困難的面試官不幸拿到Reject,如果其它關能再穩一點,
尤其是像第一關,區間的經典題以筆者現在一年後回去回顧,大概3分鐘可以秒殺,
搞不好是能夠拿一個Strong Hire救回第三關的

另一件算是運氣很不好的事是,當初面試前Leetcode刷了549題,
面試完之後想說隨邊在刷一題(用我當時自己排序的清單)
居然就是跟第一關的區間相似的題目,要是當初面試前再多刷一題,可能結果就不一樣了XDDD(但誰知道呢XDDD)


上一篇
BQ - Behavioral Questions Interview
下一篇
第二次面Google
系列文
0到100的軟體工程師面試之路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言